Due to innovations in network computing technologies and application development, many companies, businesses and organizations, for example, are providing e-business services on global communication networks such as the WWW (World Wide Web) and the Internet. Such services are implemented as applications, which are accessible through an entity's Web site or a third-party host system, for example, and which are executed using a client/server configuration through a network connection. In a client/server system, a server dispatches an application and data to a client through a network connection. A client/server system may comprise a Web server, which responds to requests for programs or data from a web browser client executing on a client device or gateway node.
There are various commercially available application development tools, which can be used for designing complex applications, such as Web applications. For example, application development tools for constructing Web-based applications (such as speech applications) generally include what is referred to herein as (i) “flowchart” based tools and (ii) “Rapid Application Development” (RAD) based tools.
In general, flowchart based tools provide a graphical user interface (GUI) that allows a developer to design a flowchart of an application, and possibly generate the markup of the application. In a flowchart based tool, an application is represented as a flowchart containing nodes and edges that connect the nodes. The flowchart based tools process the flowchart description of the application and render the entire application into a single “page” (i.e., monolithic application), wherein the corresponding server code, client pages, and application artifacts are generated in terms of a single-page application.
Flowchart based tools that generate a monolithic application (e.g., a single JSP) are not particularly suitable for developing large-scale Web applications, for example. Indeed, for purposes of efficient functionality, large-scale Web applications are typically designed using multiple pages so that each page is of reasonable size. As such, individual pages of the application can be invoked when their content is needed, which renders the application more efficient than if all the content was placed in a single large page. The efficiency of a monolithic application is extremely limited because a user would have to download and process the entire content of the application notwithstanding that the user may only traverse a certain path of the application that uses a small portion of the entire application content.
RAD based development tools typically include textual and graphical editors, which allow a developer to manually generate a document for each page of an application and the tool automatically generates the server code. With RAD based tools, the user has to manually specify the segmentation of the application into pages, which requires a high level of knowledge and expertise on the part of the developer in order to produce a reasonably efficient and balanced application
Although RAD based tools can be used by a power-developer for generating well-designed applications, such tools lack a simple user interface and are thus insufficient for use by inexperienced application developers. In addition, since modularization of the application must be done manually, the application developer may generate an application that does not provide an optimal balance between the number of pages and content of the pages, which can render the application functionally inefficient. For instance, if the application comprises a relatively large number of pages, the efficiency of the application can be reduced due to the overhead associated with multiple page requests and transmissions, especially when frequently traversed paths of the application comprise a significantly large number of pages.